#!/usr/bin/env python

import json
import time
import urllib2

def requests_post(url, data):
    req = urllib2.Request(url)
    req.add_header('Content-Type', 'application/json')
    response = urllib2.urlopen(req, json.dumps(data))


requests_post('http://localhost:9093/api/v1/silences',
    {
      "matchers": [
        {
          "name": "instance",
          "value": "web1",
          "isRegex": False
        }
      ],
      "startsAt": "2017-02-18T01:34:34Z",
      "endsAt": "2063-01-01T00:00:00Z",
      "createdBy": "john@example.com",
      "comment": "Silenced instance"
    })

requests_post('http://localhost:9093/api/v1/silences',
    {
      "matchers": [
        {
          "name": "alertname",
          "value": "Host_Down",
          "isRegex": False
        },
        {
          "name": "cluster",
          "value": "dev",
          "isRegex": False
        }
      ],
      "startsAt": "2017-02-18T01:34:34Z",
      "endsAt": "2063-01-01T00:00:00Z",
      "createdBy": "john@example.com",
      "comment": "Silenced Host_Down alerts in the dev cluster"
    })

requests_post('http://localhost:9093/api/v1/silences',
    {
      "matchers": [
        {
          "name": "instance",
          "value": "server7",
          "isRegex": False
        }
      ],
      "startsAt": "2017-02-18T01:34:34Z",
      "endsAt": "2063-01-01T00:00:00Z",
      "createdBy": "john@example.com",
      "comment": "Silenced server7"
    })

for i in xrange(0, 5):
    requests_post('http://localhost:9093/api/v1/alerts',
        [{
            "labels": {
                "alertname": "HTTP_Probe_Failed",
                "instance": "web1",
                "job": "node_exporter",
                "cluster": "dev"
            },
            "annotations": {
                "help": "Example help annotation",
                "summary": "Example summary",
                "url": "http://localhost/example.html"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "HTTP_Probe_Failed",
                "instance": "web2",
                "job": "node_exporter",
                "cluster": "dev"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server1",
                "job": "node_ping",
                "cluster": "prod",
                "ip": "127.0.0.1"
            },
            "annotations": {
                "summary": "Example summary",
                "url": "http://localhost/example.html"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server2",
                "job": "node_ping",
                "cluster": "prod",
                "ip": "127.0.0.2"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server3",
                "job": "node_ping",
                "cluster": "staging",
                "ip": "127.0.0.3"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server4",
                "job": "node_ping",
                "cluster": "staging",
                "ip": "127.0.0.4"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server5",
                "job": "node_ping",
                "cluster": "staging",
                "ip": "127.0.0.5"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server6",
                "job": "node_ping",
                "cluster": "dev",
                "ip": "127.0.0.6"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server7",
                "job": "node_ping",
                "cluster": "dev",
                "ip": "127.0.0.7"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Host_Down",
                "instance": "server8",
                "job": "node_ping",
                "cluster": "dev",
                "ip": "127.0.0.8"
            },
            "annotations": {
                "summary": "Example summary"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Memory_Usage_Too_High",
                "instance": "server2",
                "job": "node_exporter",
                "cluster": "prod"
            },
            "annotations": {
                "alert": "Memory usage exceeding threshold",
                "dashboard": "http://localhost/dashboard.html"
            },
            "generatorURL": "localhost/prometheus"
        }, {
            "labels": {
                "alertname": "Free_Disk_Space_Too_Low",
                "instance": "server5",
                "job": "node_exporter",
                "cluster": "staging",
                "disk": "sda",
            },
            "annotations": {
                "alert": "Less than 10% disk space is free",
                "dashboard": "http://localhost/dashboard.html"
            },
            "generatorURL": "localhost/prometheus"
        }]
    )
    time.sleep(10)
